package number

import "strconv"

/*
author xigexb
date 2023-05-03 18:00
*/

// ==================
// number-number: number相关工具
// ==================

// ParseInt 转换string 为 int
func ParseInt(str string) (int, error) {
	num, err := ParseInt64(str)
	if err != nil {
		return 0, err
	} else {
		return int(num), nil
	}
}

// ParseInt8 转换string 为 int8
func ParseInt8(str string) (int8, error) {
	num, err := strconv.ParseInt(str, 10, 16)
	if err != nil {
		return 0, err
	} else {
		return int8(num), nil
	}
}

// ParseInt16 转换string 为 int16
func ParseInt16(str string) (int16, error) {
	num, err := strconv.ParseInt(str, 10, 16)
	if err != nil {
		return 0, err
	} else {
		return int16(num), nil
	}
}

// ParseInt32 转换 string 为 int32
func ParseInt32(str string) (int32, error) {
	num, err := strconv.ParseInt(str, 10, 32)
	if err != nil {
		return 0, err
	} else {
		return int32(num), nil
	}
}

// ParseInt64 转换 string 为 int64
func ParseInt64(str string) (int64, error) {
	return strconv.ParseInt(str, 10, 64)
}

// ParseFloat32 转换 string 为 float32
func ParseFloat32(str string) (float32, error) {
	num, err := strconv.ParseFloat(str, 32)
	if err != nil {
		return 0, err
	} else {
		return float32(num), nil
	}
}

// ParseFloat64 转换 string 为 float64
func ParseFloat64(str string) (float64, error) {
	return strconv.ParseFloat(str, 32)
}

// ParseFloat 转换 string 为 float64
func ParseFloat(str string) (float64, error) {
	return ParseFloat64(str)
}
